package com.longe.netty.transferFiles.util;
import com.longe.netty.transferFiles.domain.*;

public class MsgUtil {

    /**
     * 构建对象；请求传输文件(客户端)
     *
     * @param fileUrl  客户端文件地址
     * @param fileName 文件名称
     * @param fileSize 文件大小
     * @return 传输协议
     */
    public static FileTransferProtocol buildRequestTransferFile(String fileUrl, String fileName, Long fileSize) {

        TransferRequest transferRequest = new TransferRequest();
        transferRequest.setFileUrl(fileUrl);
        transferRequest.setFileName(fileName);
        transferRequest.setFileSize(fileSize);

        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        //0请求传输文件、1文件传输指令、2文件传输数据
        fileTransferProtocol.setTransferType(TransferConstants.TransferType.REQUEST);
        fileTransferProtocol.setTransferObj(transferRequest);

        return fileTransferProtocol;

    }

    /**
     * 构建对象；文件传输指令(服务端)
     * @param status          0请求传输文件、1文件传输指令、2文件传输数据
     * @param fileUrl         客户端文件地址
     * @param readPosition    读取位置
     * @return                传输协议
     */
    public static FileTransferProtocol buildTransferInstruct(Integer status, String fileUrl, 
                                                             Integer readPosition) {

        TransferInstruct transferInstruct = new TransferInstruct();
        transferInstruct.setFileTransferStatus(status);
        transferInstruct.setFileUrl(fileUrl);
        transferInstruct.setReadPosition(readPosition);

        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        //0传输文件'请求'、1文件传输'指令'、2文件传输'数据'
        fileTransferProtocol.setTransferType(TransferConstants.TransferType.INSTRUCT);
        fileTransferProtocol.setTransferObj(transferInstruct);

        return fileTransferProtocol;
    }

    /**
     * 构建对象；文件传输指令(服务端)
     *
     * @return 传输协议
     */
    public static FileTransferProtocol buildTransferInstruct(TransferInstruct transferInstruct) {
        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        //0传输文件'请求'、1文件传输'指令'、2文件传输'数据'
        fileTransferProtocol.setTransferType(TransferConstants.TransferType.INSTRUCT);
        fileTransferProtocol.setTransferObj(transferInstruct);
        return fileTransferProtocol;
    }

    /**
     * 构建对象；文件传输数据(客户端)
     *
     * @return 传输协议
     */
    public static FileTransferProtocol buildTransferData(TransferData transferData) {
        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        //0传输文件'请求'、1文件传输'指令'、2文件传输'数据'
        fileTransferProtocol.setTransferType(TransferConstants.TransferType.DATA);
        fileTransferProtocol.setTransferObj(transferData);
        return fileTransferProtocol;
    }

}
